package pers.dawnyang.common.enums;

import java.util.ArrayList;
import java.util.List;

import pers.dawnyang.common.domain.entity.SysConfig;

/**
 * 系统参数配置，可在管理界面系统参数配置中修改值，实现项目在运行时，部分功能可以动态设置
 * 项目启动后会自动同步新增参数到数据库，或删除数据库中多余的参数。
 * 使用自定义的枚举值参与代码逻辑判断
 * 
 * @author dawn yang
 *
 */
public enum ConfigEnum {
    
    DEFAULT_PWD("默认密码","defaultPwd","222222",""),
    CAPTCHA_SWITCH("登录验证码","captchaSwitch","ON","ON:开启;OFF:关闭;");
    
    /**
     * 分别与数据库sys_config表字段对应
     */
    private String configName;
    private String configCode;
    //此处为参数默认值，可在代码中参与逻辑判断
    //与数据库同步时，不会更新此字段
    private String configValue;
    private String remark;
    
    
    private ConfigEnum(String configName, String configCode, String configValue, String remark) {
	this.configName = configName;
	this.configCode = configCode;
	this.configValue = configValue;
	this.remark = remark;
    }
    
    public String getConfigName() {
        return configName;
    }
    public String getConfigCode() {
        return configCode;
    }
    public String getConfigValue() {
        return configValue;
    }
    public String getRemark() {
        return remark;
    }
    
    public static List<SysConfig> getConfigs(){
	List<SysConfig> configs = new ArrayList<>();
	ConfigEnum[] enums = ConfigEnum.values();
	for(ConfigEnum ce : enums) {
	    SysConfig sc = new SysConfig();
	    sc.setConfigName(ce.getConfigName());
	    sc.setConfigCode(ce.getConfigCode());
	    sc.setConfigValue(ce.getConfigValue());
	    sc.setRemark(ce.getRemark());
	    configs.add(sc);
	}
	return configs;
    }
    
    public static void main(String[] args) {
	List<SysConfig> configs = ConfigEnum.getConfigs();
	for(SysConfig sc : configs) {
	    System.out.println(sc);
	}
    }

}
